Adding some more judges, here and there.
[andmenj-acm.git] / Maratones competidas / Maratón Nacional 2011 / workspace / e / gas.cpp
blobe58dca34be47fef3571db640e61658c96c4e62d1
1 // Equipo Poncho, Carriel y Ruana
2 using namespace std;
3 #include <algorithm>
4 #include <iostream>
5 #include <iterator>
6 #include <sstream>
7 #include <fstream>
8 #include <cassert>
9 #include <climits>
10 #include <cstdlib>
11 #include <cstring>
12 #include <string>
13 #include <cstdio>
14 #include <vector>
15 #include <cmath>
16 #include <queue>
17 #include <stack>
18 #include <list>
19 #include <map>
20 #include <set>
22 template <class T> string toStr(const T &x)
23 { stringstream s; s << x; return s.str(); }
24 template <class T> int toInt(const T &x)
25 { stringstream s; s << x; int r; s >> r; return r; }
27 #define For(i, a, b) for (int i=(a); i<(b); ++i)
28 #define foreach(x, v) for (typeof (v).begin() x = (v).begin(); x != (v).end(); ++x)
29 #define D(x) cout << #x " = " << (x) << endl;
31 const double EPS = 1e-9;
33 int cmp(double x, double y = 0, double tol = EPS) {
34 return (x <= y + tol) ? (x + tol < y) ? -1 : 0 : 1;
37 #define INPUT_FILE "problemname"
40 int main(){
41 freopen(INPUT_FILE ".in", "r", stdin);
42 long long l, gases;
44 vector<pair<long long, long long>> stations;
46 while(cin >> l >> gases) {
48 stations.clear();
49 if(l == 0 and gases == 0) break;
50 for(long long i=0; i<g; i++) {
51 long long p, r;
52 cin >> p >> r;
53 long long li, ls;
54 li = max(0, p-r);
55 ls = min(l, p+r);
56 stations.push_back(make_pair(li, ls);
58 sort(stations.begin(), stations.end());
59 long long usados = 0;
60 for(long long i = 0; i<l;) {
61 long long fin = i;
62 for(long long g; g<stations.length(); ++g) {
63 if (stations[g].first <= i and stations[g].second > i) {
64 fin = max(fin, stations[g].second);
66 if (stations[g].first > i) break;
68 if(i == fin) {
69 cout << -1 << endl;
70 break;
72 i = fin;
73 usados++;
75 cout << gases-usados << endl;
78 return 0;